/**
 * 
 */
package ec.gob.magap.era.web.controller;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.faces.bean.ManagedBean;

import javax.faces.context.FacesContext;


import javax.servlet.http.HttpSession;

import ec.gob.magap.era.entidades.Resultado;
import ec.gob.magap.era.entities.Catalogo;
import ec.gob.magap.era.entities.Tipocatalogo;
import ec.gob.magap.era.entities.Usuario;
import ec.gob.magap.era.exceptions.ServicioException;
import ec.gob.magap.era.servicios.interfaces.CatalogoService;

import ec.gob.magap.era.web.general.Utilidades;

/**
 * @author Javier
 *
 */
@Stateless
@ManagedBean
public class CatalogoController extends BasicoController {

	/**
	 * 
	 */
	private static final long serialVersionUID = -1430415766407858396L;
	
	@EJB(name = "CatalogoServicio")
	private CatalogoService catalogoServicio;
	
	public CatalogoController()
	{
				
	}
	
	
	@PostConstruct
    public void postContruct() {
		HttpSession session = Utilidades.getSession();
		String strTipoCatalogo = session.getAttribute("TipoCatalogo").toString();
		tipoCatalogo = Integer.parseInt( strTipoCatalogo);
		
		setUsuario((Usuario) session.getAttribute("UsuarioLogeado"));
		
		ConsultarCatalogo();
		//ConsultarTipoCatalogo();
		
    }
	
	private String operacion;
	
	
	/**
	 * @return the operacion
	 */
	public String getOperacion() {
		return operacion;
	}


	/**
	 * @param operacion the operacion to set
	 */
	public void setOperacion(String operacion) {
		this.operacion = operacion;
	}

	private String tituloModal;
	
	/**
	 * @return the tituloModal
	 */
	public String getTituloModal() {
		return tituloModal;
	}

	private int idSeleccionado;
	
	/**
	 * @return the idSeleccionado
	 */
	public int getIdSeleccionado() {
		return idSeleccionado;
	}

	/**
	 * @param idSeleccionado the idSeleccionado to set
	 */
	public void setIdSeleccionado(int idSeleccionado) {
		this.idSeleccionado = idSeleccionado;
	}

	/**
	 * @param tituloModal the tituloModal to set
	 */
	public void setTituloModal(String tituloModal) {
		this.tituloModal = tituloModal;
	}

	private String titulo;
	
	/**
	 * @return the titulo
	 */
	public String getTitulo() {
		return titulo;
	}

	/**
	 * @param titulo the titulo to set
	 */
	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	private List<Tipocatalogo> tipos;
	/**
	 * @return the tipos
	 */
	public List<Tipocatalogo> getTipos() {
		return tipos;
	}

	/**
	 * @param tipos the tipos to set
	 */
	public void setTipos(List<Tipocatalogo> tipos) {
		this.tipos = tipos;
	}

	private  List<Catalogo> catalogos;
	
	/**
	 * @return the catalogos
	 */
	public List<Catalogo> getCatalogos() {
		return catalogos;
	}

	/**
	 * @param catalogos the catalogos to set
	 */
	public void setCatalogos(List<Catalogo> catalogos) {
		this.catalogos = catalogos;
	}

	private String descripcion;
	
	/**
	 * @return the descripcion
	 */
	public String getDescripcion() {
		return descripcion;
	}

	/**
	 * @param descripcion the descripcion to set
	 */
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	/**
	 * @return the catalogoSeleccionado
	 */
	public Catalogo getCatalogoSeleccionado() {
		return catalogoSeleccionado;
	}

	/**
	 * @param catalogoSeleccionado the catalogoSeleccionado to set
	 */
	public void setCatalogoSeleccionado(Catalogo catalogoSeleccionado) {
		this.catalogoSeleccionado = catalogoSeleccionado;
	}

	/**
	 * @return the tipoCatalogo
	 */
	public int getTipoCatalogo() {
		return tipoCatalogo;
	}

	/**
	 * @param tipoCatalogo the tipoCatalogo to set
	 */
	public void setTipoCatalogo(int tipoCatalogo) {
		this.tipoCatalogo = tipoCatalogo;
	}

	private Catalogo catalogoSeleccionado;
	
	private int tipoCatalogo;
	
	private Tipocatalogo tipoCatalogoSeleccionado;
	
	
	/**
	 * @return the tipoCatalogoSeleccionado
	 */
	public Tipocatalogo getTipoCatalogoSeleccionado() {
		return tipoCatalogoSeleccionado;
	}

	/**
	 * @param tipoCatalogoSeleccionado the tipoCatalogoSeleccionado to set
	 */
	public void setTipoCatalogoSeleccionado(Tipocatalogo tipoCatalogoSeleccionado) {
		this.tipoCatalogoSeleccionado = tipoCatalogoSeleccionado;
	}

	private void ConsultarCatalogo() {
		try {
			catalogos= catalogoServicio.ConsultarCatalogo(getTipoCatalogo());
			titulo = catalogos.get(0).getIdtipo().getDescripcion();
			tipoCatalogoSeleccionado = catalogos.get(0).getIdtipo();
		} catch (ServicioException e) {
			
		}
	}
	
	
	public String editarCatalogo(){

		
		FacesContext context = FacesContext.getCurrentInstance();  
		
		String strIndex = (String) context.getExternalContext().getRequestParameterMap().get("fila");
		int id = Integer.parseInt( strIndex);
		for (Catalogo catalogo : catalogos) {
			if (catalogo.getId().intValue()== id){
				catalogoSeleccionado = catalogo;
				break;
			}
		}
		descripcion=catalogoSeleccionado.getDescripcion();
		tituloModal = "Editar " + titulo;
		operacion="Modificar";
		
		Utilidades.getSession().setAttribute("operacion", operacion);
		Utilidades.getSession().setAttribute("CatalogoSeleccionado", catalogoSeleccionado);
		Utilidades.getSession().setAttribute("tituloModal", tituloModal);
		
		return "mantenercatalogo";
	}
	public String eliminarCatalogo(){
		
	    FacesContext context = FacesContext.getCurrentInstance();  
		
		String strIndex = (String) context.getExternalContext().getRequestParameterMap().get("fila");
		int id = Integer.parseInt( strIndex);
		for (Catalogo catalogo : catalogos) {
			if (catalogo.getId().intValue()== id){
				catalogoSeleccionado = catalogo;
				break;
			}
		}
		
		tituloModal = "Eliminar " + titulo;
		operacion="Eliminar";
		
		return eliminar();
	}
	

	public String nuevoCatalogo(){
		
	
		
		
		this.catalogoSeleccionado = new Catalogo();
		this.catalogoSeleccionado.setEstado("ACTIVO");
		this.catalogoSeleccionado.setIdtipo(tipoCatalogoSeleccionado);
		tituloModal = "Crear " + titulo;
		operacion="Crear";
		
		Utilidades.getSession().setAttribute("operacion", operacion);
		Utilidades.getSession().setAttribute("CatalogoSeleccionado", catalogoSeleccionado);
		Utilidades.getSession().setAttribute("tituloModal", tituloModal);
		
		
		return "mantenercatalogo";
	}
	
	public String eliminar()
	{
		
		try {
			Resultado resultado = catalogoServicio.GuardarCatalogo(catalogoSeleccionado, operacion);
			if (resultado.getEstado()){
				
				return "catalogo";
			}
		} catch (ServicioException e) {
			System.out.println(e.getMessage());
		}
		return "";
		
		
	}
}
